//package com.gxa.hualian.controller;
//
//import com.gxa.hualian.pojo.User;
//import com.gxa.hualian.service.UserService;
//import com.gxa.hualian.service.impl.UserServiceImpl;
//import org.apache.poi.hssf.usermodel.*;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RequestParam;
//
//import javax.servlet.http.HttpServletResponse;
//import java.io.UnsupportedEncodingException;
//import java.net.URLEncoder;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.List;
//
///**
// * @author 10076
// * 在导出操作中,因为要用poi自己的workbook实现输出，参数是通过响应对象创建的流
// * 所以,在该控制器中,需要注入HttpServletResponse对 象
// * 请求方式根据前端需耍: get/ post
// * 导出用户信息
// * 导出指定时间段的用户信息(起始-结束)根据积分情况导出对应的用户信息
// * 导出管理员列表
// * 优化:
// * 1，利用方法建立的二级映射关系区分导出类型(mgr/user)
// * 2.利用参数设计用户的查询条件,并指定为非必要(required = false),查询更灵活
// * 本质上,这些可选参数最终影响的是mybaits的查询语句的设计(*利用mybatis的动态sql)
// * poi核心操作固定,但数据/文件名/字段列表有变化,使用封装思想进行优化
// */
//@Controller
//@RequestMapping("/export")
//public class ExportController {
//
//    private void handler(HttpServletResponse response,String fileName,String[] headers,List data) throws Exception {
//        HSSFWorkbook workbook = new HSSFWorkbook();
//        // 创建工作表
//        HSSFSheet sheet = workbook.createSheet(fileName);
//        fileName =fileName +".xls";
//        // 将文件名中的中文部分被URL编码后的内容进行解析, 最终还是显示为中文状态
//        fileName = URLEncoder.encode(fileName, "utf-8").replaceAll("\\+", "%20");
//        // headers表示excel表中第一行的表头 在excel表中添加表头
//       // String[] headers = {"序号", "昵称", "电话", "注册日期"};
//        // 创建一个行对象, 作为表头
//        HSSFRow row = sheet.createRow(0);
//        for (int i = 0; i < headers.length; i++) {
//            HSSFCell cell = row.createCell(i);   // 在行中添加单元格
//            HSSFRichTextString text = new HSSFRichTextString(headers[i]);
//            cell.setCellValue(text);   // 把字段名添加到表头行上
//        }
//
//        //准备将时间格式处理为标准日期格式
//        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//
//        // 添加数据行:
//        int rowNum = 1;
//        for (Object item : data) {
//            HSSFRow dataRow = sheet.createRow(rowNum);
//            dataRow.createCell(0).setCellValue(item.getId());
//            dataRow.createCell(1).setCellValue(item.getName());
//            dataRow.createCell(2).setCellValue(item.getPhone());
//            dataRow.createCell(3).setCellValue(dateFormat.format(item.getRegTime()));
//            rowNum++;
//        }
//
//        //返回给前端下载
//        response.setContentType("application/octet-stream;charset=UTF-8");
//        response.setHeader("Content-disposition", "attachment;filename=" + fileName);
//        response.flushBuffer();
//        workbook.write(response.getOutputStream());
//    }
//
//    @GetMapping(" /user")
//    public void exportUser(
//            @RequestParam(value = "from", required = false) String from,
//            @RequestParam(value = "to", required = false) String to,
//            HttpServletResponse response) throws Exception {
//        User user = new User();
//        user.setId(1);
//        user.setName("lll");
//        user.setPhone("13333");
//        List<User> users = new ArrayList<>();
//        users.add(user);
//        // UserService userService=new UserServiceImpl();
//
//        // 调用业务层查询所有
//        //  List<User> users= userService.();
//        // 工作簿对象
//
//
//    }
//
//    @GetMapping("/mgr")
//    public void exportMgr(@RequestParam("userType") String userType, HttpServletResponse httpServletResponse) throws Exception {
//
//    }
//}
//
